# -*- coding: utf-8 -*-
"""中国行政区划常量数据（GB/T 2260标准）"""

# 省级行政区划字典
PROVINCES = {
    '11': '北京市',
    '12': '天津市',
    '13': '河北省',
    '14': '山西省',
    '15': '内蒙古自治区',
    '21': '辽宁省',
    '22': '吉林省',
    '23': '黑龙江省',
    '31': '上海市',
    '32': '江苏省',
    '33': '浙江省',
    '34': '安徽省',
    '35': '福建省',
    '36': '江西省',
    '37': '山东省',
    '41': '河南省',
    '42': '湖北省',
    '43': '湖南省',
    '44': '广东省',
    '45': '广西壮族自治区',
    '46': '海南省',
    '50': '重庆市',
    '51': '四川省',
    '52': '贵州省',
    '53': '云南省',
    '54': '西藏自治区',
    '61': '陕西省',
    '62': '甘肃省',
    '63': '青海省',
    '64': '宁夏回族自治区',
    '65': '新疆维吾尔自治区'
}

# 热门城市字典（代码前4位为省级代码）
CITIES = {
    # 北京
    '1101': '北京市',
    
    # 上海
    '3101': '上海市',
    
    # 广东
    '4401': '广州市',
    '4403': '深圳市',
    '4404': '珠海市',
    '4405': '汕头市',
    '4406': '佛山市',
    
    # 浙江
    '3301': '杭州市',
    '3302': '宁波市',
    '3303': '温州市',
    
    # 其他热门城市...
    '3201': '南京市',
    '3205': '苏州市',
    '3701': '济南市',
    '3702': '青岛市',
    '5101': '成都市'
}

# 城市有效性校验映射
VALID_CITIES = {
    # 格式: (省名称, 市名称): 行政区划代码
    ('北京市', '北京市'): '110100',
    ('上海市', '上海市'): '310100',
    ('广东省', '广州市'): '440100',
    ('广东省', '深圳市'): '440300',
    ('浙江省', '杭州市'): '330100',
    ('江苏省', '南京市'): '320100',
    ('四川省', '成都市'): '510100',
    # 可继续补充...
}

# 城市坐标中心点（可选）
CITY_CENTERS = {
    '440300': {  # 深圳
        'latitude': 22.5431, 
        'longitude': 114.0579,
        'radius_km': 50  # 城市半径
    },
    '110100': {  # 北京
        'latitude': 39.9042,
        'longitude': 116.4074,
        'radius_km': 80
    }
}

def get_city_code(province_name, city_name):
    """获取城市行政区划代码"""
    return VALID_CITIES.get((province_name, city_name))

def is_valid_city(province, city):
    """校验城市是否有效"""
    return (province, city) in VALID_CITIES

def get_city_center(city_code):
    """获取城市中心坐标（用于同城范围计算）"""
    return CITY_CENTERS.get(city_code)